---
title: "Hoteles y Moteles de la CDMX"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: scroll
fig_mobile: TRUE
theme: flatly
source_code: embed
---
```{r global, include=FALSE}
# runtime: shiny
library(shiny)
library(tidyverse)
library(DT)
library(leaflet)
library(leafem)
library(reactable)
library(crosstalk)
library(plotly)
moteles_y_hoteles <- read.csv("https://cghv94.github.io/subtesoreria/moteles_y_hoteles.csv")
trivago <- read.csv("https://cghv94.github.io/hoteles-moteles-trivago.csv")
despegar <- read.csv("https://cghv94.github.io/hoteles-despegar-cdmx.csv")
```
DENUE
=====================================
Row
-----------------------------------------------------------------------
### Mapa de Hoteles y Moteles de la CDMX disponibles en el Directorio Estadístico de Unidades Económicas (DENUE)
```{r}
micro <- moteles_y_hoteles %>% filter(per_ocu == "0 a 5 personas")
mini <- moteles_y_hoteles %>% filter(per_ocu == "6 a 10 personas")
peque <- moteles_y_hoteles %>% filter(per_ocu == "11 a 30 personas")
normal <- moteles_y_hoteles %>% filter(per_ocu == "31 a 50 personas")
grande <- moteles_y_hoteles %>% filter(per_ocu == "51 a 100 personas")
enorme <- moteles_y_hoteles %>% filter(per_ocu == "101 a 250 personas")
macro <- moteles_y_hoteles %>% filter(per_ocu == "251 y más personas")
img <- "https://www.transparencia.cdmx.gob.mx/themes/vut/assets/images/Logo-cdmx.png"
mapa <- leaflet(data = moteles_y_hoteles) %>%
addProviderTiles("CartoDB.Positron") %>% setView( -99.145555555556, 19.419444444444, zoom = 10) %>%
addCircleMarkers(data = micro, lng = ~longitud, lat = ~latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", micro$nom_estab, "
", "Empleados: ", micro$per_ocu, "
", "Web: ", micro$www, "
", "Correo: ", micro$correoelec, "
", "Teléfono: ", micro$telefono, "
", "Alcaldía: ", micro$municipio, "
", "Fecha de alta: ", micro$fecha_alta),
color = "darkgreen",
clusterOptions = markerClusterOptions(),
group = "0 a 5 personas") %>%
addCircleMarkers(data = mini, lng = ~longitud, lat = ~latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", mini$nom_estab, "
", "Empleados: ", mini$per_ocu, "
", "Web: ", mini$www, "
", "Correo: ", mini$correoelec, "
", "Teléfono: ", mini$telefono, "
", "Alcaldía: ", mini$municipio, "
", "Fecha de alta: ", mini$fecha_alta),
color = "green",
clusterOptions = markerClusterOptions(),
group = "6 a 10 personas") %>%
addCircleMarkers(data = peque, lng = ~longitud, lat = ~latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", peque$nom_estab, "
", "Empleados: ", peque$per_ocu, "
", "Web: ", peque$www, "
", "Correo: ", peque$correoelec, "
", "Teléfono: ", peque$telefono, "
", "Alcaldía: ", peque$municipio, "
", "Fecha de alta: ", peque$fecha_alta),
color = "lightgreen",
clusterOptions = markerClusterOptions(),
group = "11 a 30 personas") %>%
addCircleMarkers(data = normal, lng = ~longitud, lat = ~latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", normal$nom_estab, "
", "Empleados: ", normal$per_ocu, "
", "Web: ", normal$www, "
", "Correo: ", normal$correoelec, "
", "Teléfono: ", normal$telefono, "
", "Alcaldía: ", normal$municipio, "
", "Fecha de alta: ", normal$fecha_alta),
color = "yellow",
clusterOptions = markerClusterOptions(),
group = "31 a 50 personas") %>%
addCircleMarkers(data = grande, lng = ~longitud, lat = ~latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", grande$nom_estab, "
", "Empleados: ", grande$per_ocu, "
", "Web: ", grande$www, "
", "Correo: ", grande$correoelec, "
", "Teléfono: ", grande$telefono, "
", "Alcaldía: ", grande$municipio, "
", "Fecha de alta: ", grande$fecha_alta),
color = "orange",
clusterOptions = markerClusterOptions(),
group = "51 a 100 personas") %>%
addCircleMarkers(data = enorme, lng = ~longitud, lat = ~latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", enorme$nom_estab, "
", "Empleados: ", enorme$per_ocu, "
", "Web: ", enorme$www, "
", "Correo: ", enorme$correoelec, "
", "Teléfono: ", enorme$telefono, "
", "Alcaldía: ", enorme$municipio, "
", "Fecha de alta: ", enorme$fecha_alta),
color = "red",
clusterOptions = markerClusterOptions(),
group = "101 a 250 personas") %>%
addCircleMarkers(data = macro, lng = ~longitud, lat = ~latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", macro$nom_estab, "
", "Empleados: ", macro$per_ocu, "
", "Web: ", macro$www, "
", "Correo: ", macro$correoelec, "
", "Teléfono: ", macro$telefono, "
", "Alcaldía: ", macro$municipio, "
", "Fecha de alta: ", macro$fecha_alta),
color = "brown",
clusterOptions = markerClusterOptions(),
group = "251 y más personas") %>% leaflet::addLayersControl(overlayGroups = c("0 a 5 personas", "6 a 10 personas", "11 a 30 personas", "31 a 50 personas", "51 a 100 personas", "101 a 250 personas", "251 y más personas"), options = layersControlOptions(collapsed = FALSE)) %>%
addLogo(img, url = "https://www.transparencia.cdmx.gob.mx/themes/vut/assets/images/", width = 200)
mapa
```
Row
-----------------------------------------------------------------------
### Directorio de Hoteles y Moteles de la CDMX disponibles en el Directorio Estadístico de Unidades Económicas (DENUE)
|
**Directorio de Hoteles y Moteles de la CDMX disponibles en el DENUE**
|
Row {data-height=600 .tabset .tabset-fade}
-----------------------------------------------------------------------
### Por tipo de unidad
|
**Número de unidades económicas por tipo de activiad**
```{r}
actividad <- data.frame(table(moteles_y_hoteles$nombre_act))
actividad <- actividad[order(-actividad$Freq),]
actividad <- transform(actividad, Porcentaje = round(prop.table(actividad$Freq),4)*100)
colnames(actividad) <- c("Actividad", "Número de unidades económicas", "Porcentaje")
g1 <- ggplot(actividad) +
aes(
x = Actividad,
fill = Porcentaje,
weight = `Número de unidades económicas`
) +
geom_bar() +
scale_fill_distiller(palette = "Greens", direction = 1) +
coord_flip() +
theme_minimal()
ggplotly(g1)
```
|
### Por alcaldía
|
**Número de unidades por alcaldía**
```{r}
alcaldia <- data.frame(table(moteles_y_hoteles$municipio))
alcaldia <- alcaldia[order(-alcaldia$Freq),]
alcaldia <- transform(alcaldia, Porcentaje = round(prop.table(alcaldia$Freq),4)*100)
colnames(alcaldia) <- c("Alcaldía", "Número de unidades económicas", "Porcentaje")
g2 <- ggplot(alcaldia) +
aes(
x = Alcaldía,
fill = Porcentaje,
weight = `Número de unidades económicas`
) +
geom_bar() +
scale_fill_distiller(palette = "Greens", direction = 1) +
coord_flip() +
theme_minimal()
ggplotly(g2)
```
|
### Por número de empleados
|
**Número de unidades por número de empleados**
```{r}
n_empleados <- data.frame(table(moteles_y_hoteles$per_ocu))
n_empleados <- n_empleados[order(-n_empleados$Freq),]
n_empleados <- transform(n_empleados, Porcentaje = round(prop.table(n_empleados$Freq),4)*100)
colnames(n_empleados) <- c("Número de empleados", "Número de unidades económicas", "Porcentaje")
g3 <- ggplot(n_empleados) +
aes(
x = `Número de empleados`,
fill = Porcentaje,
weight = `Número de unidades económicas`
) +
geom_bar() +
scale_fill_distiller(palette = "Greens", direction = 1) +
coord_flip() +
theme_minimal()
ggplotly(g3)
```
|
Row
-----------------------------------------------------------------------
###
Subtesorería de Política Fiscal, Gobierno de la Ciudad de México. Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.
Trivago.com
=====================================
Row
-----------------------------------------------------------------------
### Mapa de Hoteles y Moteles de la CDMX disponibles en Trivago.com
```{r}
img <- "https://www.transparencia.cdmx.gob.mx/themes/vut/assets/images/Logo-cdmx.png"
mapa_trivago <- leaflet(data = trivago) %>%
addProviderTiles("CartoDB.Positron") %>% setView( -99.145555555556, 19.419444444444, zoom = 10) %>%
addCircleMarkers(data = trivago, lng = ~Longitud, lat = ~Latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", trivago$Nombre, "
", "Precio por noche ", "
","Oferta 1: ", trivago$Oferta_1, "
", "Precio 1: ", trivago$Precio_1, "
", "Oferta 2: ", trivago$Oferta_2, "
", "Precio 2: ", trivago$Precio_2, "
", "Oferta 3: ", trivago$Oferta_3, "
", "Precio 3: ", trivago$Precio_3),
color = "green",
clusterOptions = markerClusterOptions()) %>%
addLogo(img, url = "https://www.transparencia.cdmx.gob.mx/themes/vut/assets/images/", width = 200)
mapa_trivago
```
Row
-----------------------------------------------------------------------
### Directorio de Hoteles y Moteles de la CDMX disponibles en Trivago.com
|
**Directorio de Hoteles y Moteles de la CDMX disponibles en Trivago.com**
|
Row {data-height=600 .tabset .tabset-fade}
-----------------------------------------------------------------------
### Precio 1
|
**Hoteles y moteles por Precio 1**
```{r}
g_trivago_1 <- ggplot(trivago_graficas) +
aes(x = Precio_1, y = Precio_1, text = Nombre) +
geom_point(shape = "circle", size = 1.5, colour = "#228B22") +
theme_minimal()
ggplotly(g_trivago_1)
```
|
### Precio 2
|
**Hoteles y moteles por Precio 2**
```{r}
g_trivago_2 <- ggplot(trivago_graficas) +
aes(x = Precio_2, y = Precio_2, text = Nombre) +
geom_point(shape = "circle", size = 1.5, colour = "#228B22") +
theme_minimal()
ggplotly(g_trivago_2)
```
|
### Precio 3
|
**Hoteles y moteles por Precio 3**
```{r}
g_trivago_3 <- ggplot(trivago_graficas) +
aes(x = Precio_3, y = Precio_3, text = Nombre) +
geom_point(shape = "circle", size = 1.5, colour = "#228B22") +
theme_minimal()
ggplotly(g_trivago_3)
```
|
Row
-----------------------------------------------------------------------
###
Subtesorería de Política Fiscal, Gobierno de la Ciudad de México. Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.
Despegar.com
=====================================
Row
-----------------------------------------------------------------------
### Mapa de Hoteles y Moteles de la CDMX disponibles en Despegar.com
```{r}
uno <- despegar %>% filter(Estrellas == 1)
dos <- despegar %>% filter(Estrellas == 2)
tres <- despegar %>% filter(Estrellas == 3)
cuatro <- despegar %>% filter(Estrellas == 4)
cinco <- despegar %>% filter(Estrellas == 5)
seis <- despegar %>% filter(Estrellas == 6)
img <- "https://www.transparencia.cdmx.gob.mx/themes/vut/assets/images/Logo-cdmx.png"
mapa_despegar <- leaflet(data = despegar) %>%
addProviderTiles("CartoDB.Positron") %>% setView( -99.145555555556, 19.419444444444, zoom = 10) %>%
addCircleMarkers(data = uno, lng = ~Longitud, lat = ~Latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", uno$Nombre, "
", "Estrellas: ", uno$Estrellas, "
", "Precio de la habitación ", "
", "Impuestos: ", uno$Impuestos, "
", "Precio final: ", uno$Precio_final),
color = "darkgreen",
clusterOptions = markerClusterOptions(),
group = "1 esatrella") %>%
addCircleMarkers(data = dos, lng = ~Longitud, lat = ~Latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", dos$Nombre, "
", "Estrellas: ", dos$Estrellas, "
", "Precio de la habitación ", "
", "Impuestos: ", dos$Impuestos, "
", "Precio final: ", dos$Precio_final),
color = "green",
clusterOptions = markerClusterOptions(),
group = "2 esatrellas") %>%
addCircleMarkers(data = tres, lng = ~Longitud, lat = ~Latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", tres$Nombre, "
", "Estrellas: ", tres$Estrellas, "
", "Precio de la habitación ", "
", "Impuestos: ", tres$Impuestos, "
", "Precio final: ", tres$Precio_final),
color = "lightgreen",
clusterOptions = markerClusterOptions(),
group = "3 esatrellas") %>%
addCircleMarkers(data = cuatro, lng = ~Longitud, lat = ~Latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", cuatro$Nombre, "
", "Estrellas: ", cuatro$Estrellas, "
", "Precio de la habitación ", "
", "Impuestos: ", cuatro$Impuestos, "
", "Precio final: ", cuatro$Precio_final),
color = "yellow",
clusterOptions = markerClusterOptions(),
group = "4 esatrellas") %>%
addCircleMarkers(data = cinco, lng = ~Longitud, lat = ~Latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", cinco$Nombre, "
", "Estrellas: ", cinco$Estrellas, "
", "Precio de la habitación ", "
", "Impuestos: ", cinco$Impuestos, "
", "Precio final: ", cinco$Precio_final),
color = "orange",
clusterOptions = markerClusterOptions(),
group = "5 esatrellas") %>%
addCircleMarkers(data = seis, lng = ~Longitud, lat = ~Latitud,
radius = 10,
fillOpacity = .7,
stroke = FALSE,
popup = paste0("Nombre: ", seis$Nombre, "
", "Estrellas: ", seis$Estrellas, "
", "Precio de la habitación ", "
", "Impuestos: ", seis$Impuestos, "
", "Precio final: ", seis$Precio_final),
color = "red",
clusterOptions = markerClusterOptions(),
group = "6 esatrellas") %>%
leaflet::addLayersControl(overlayGroups = c("1 esatrella", "2 esatrellas", "3 esatrellas", "4 esatrellas", "5 esatrellas", "6 esatrellas"), options = layersControlOptions(collapsed = FALSE)) %>%
addLogo(img, url = "https://www.transparencia.cdmx.gob.mx/themes/vut/assets/images/", width = 200)
mapa_despegar
```
Row
-----------------------------------------------------------------------
### Directorio de Hoteles y Moteles de la CDMX disponibles en Despegar.com
|
**Directorio de Hoteles y Moteles de la CDMX disponibles en Despegar.com**
|
Row {data-height=600 .tabset .tabset-fade}
-----------------------------------------------------------------------
### Por estrellas
|
**Número de hoteles y moteles por número de estrellas**
```{r}
estrellas <- data.frame(table(despegar_graficas$Estrellas))
estrellas <- estrellas[order(-estrellas$Freq),]
estrellas <- transform(estrellas, Porcentaje = round(prop.table(estrellas$Freq),4)*100)
colnames(estrellas) <- c("Estrellas", "Número de unidades económicas", "Porcentaje")
g4 <- ggplot(estrellas) +
aes(
x = Estrellas,
fill = Porcentaje,
weight = `Número de unidades económicas`
) +
geom_bar() +
scale_fill_distiller(palette = "Greens", direction = 1) +
coord_flip() +
theme_minimal()
ggplotly(g4)
```
|
### Por impuestos
|
**Hoteles y moteles por impuestos**
```{r}
g5 <- ggplot(despegar_graficas) +
aes(x = Impuestos, y = Impuestos, text = Nombre) +
geom_point(shape = "circle", size = 1.5, colour = "#228B22") +
theme_minimal()
ggplotly(g5)
```
|
### Por precio final
|
**Hoteles y moteles por precio final**
```{r}
g6 <- ggplot(despegar_graficas) +
aes(x = Precio_final, y = Precio_final, text = despegar_graficas$Nombre) +
geom_point(shape = "circle", size = 1.5, colour = "#228B22") +
theme_minimal()
ggplotly(g6)
```
|
### Dispersión impuestos-precio final
|
**Hoteles y moteles por impuestos y precio final**
```{r}
g7 <- ggplot(despegar_graficas) +
aes(x = Impuestos, y = Precio_final, text = Nombre) +
geom_point(shape = "circle", size = 1.5, colour = "#228B22") +
theme_minimal()
ggplotly(g7)
```
|
Row
-----------------------------------------------------------------------
###
Subtesorería de Política Fiscal, Gobierno de la Ciudad de México. Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.